home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.io.PrintStream;
- import sun.tools.asm.Assembler;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.FieldDefinition;
- import sun.tools.java.Type;
-
- public class InlineNewInstanceExpression extends Expression {
- FieldDefinition field;
- Statement body;
-
- InlineNewInstanceExpression(int var1, Type var2, FieldDefinition var3, Statement var4) {
- super(151, var1, var2);
- this.field = var3;
- this.body = var4;
- }
-
- public Expression inline(Environment var1, Context var2) {
- return this.inlineValue(var1, var2);
- }
-
- public Expression inlineValue(Environment var1, Context var2) {
- if (this.body != null) {
- LocalField var3 = (LocalField)this.field.getArguments().elementAt(0);
- Context var4 = new Context(var2, this);
- var4.declare(var1, var3);
- this.body = this.body.inline(var1, var4);
- }
-
- if (this.body != null && this.body.op == 149) {
- this.body = null;
- }
-
- return this;
- }
-
- public Expression copyInline(Context var1) {
- InlineNewInstanceExpression var2 = (InlineNewInstanceExpression)((Node)this).clone();
- var2.body = this.body.copyInline(var1, true);
- return var2;
- }
-
- public void code(Environment var1, Context var2, Assembler var3) {
- var3.add(super.where, 187, this.field.getClassDeclaration());
- if (this.body != null) {
- LocalField var4 = (LocalField)this.field.getArguments().elementAt(0);
- CodeContext var5 = new CodeContext(var2, this);
- ((Context)var5).declare(var1, var4);
- var3.add(super.where, 58, new Integer(var4.number));
- this.body.code(var1, var5, var3);
- var3.add(var5.breakLabel);
- }
-
- }
-
- public void codeValue(Environment var1, Context var2, Assembler var3) {
- var3.add(super.where, 187, this.field.getClassDeclaration());
- if (this.body != null) {
- LocalField var4 = (LocalField)this.field.getArguments().elementAt(0);
- CodeContext var5 = new CodeContext(var2, this);
- ((Context)var5).declare(var1, var4);
- var3.add(super.where, 58, new Integer(var4.number));
- this.body.code(var1, var5, var3);
- var3.add(var5.breakLabel);
- var3.add(super.where, 25, new Integer(var4.number));
- }
-
- }
-
- public void print(PrintStream var1) {
- LocalField var2 = (LocalField)this.field.getArguments().elementAt(0);
- var1.println("(" + Constants.opNames[super.op] + "#" + var2.hashCode() + "=" + this.field.hashCode());
- if (this.body != null) {
- this.body.print(var1, 1);
- } else {
- var1.print("<empty>");
- }
-
- var1.print(")");
- }
- }
-